ALMaSS  1.0
The Animal, Landscape and Man Simulation System
PopulationManager.h
Go to the documentation of this file.
1 /*
2 *******************************************************************************************************
3 Copyright (c) 2011, Christopher John Topping, Aarhus University
4 All rights reserved.
5 
6 Redistribution and use in source and binary forms, with or without modification, are permitted provided
7 that the following conditions are met:
8 
9 Redistributions of source code must retain the above copyright notice, this list of conditions and the
10 following disclaimer.
11 Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
12 the following disclaimer in the documentation and/or other materials provided with the distribution.
13 
14 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
15 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16 FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
17 BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
18 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
19 BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
20 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
21 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 ********************************************************************************************************
23 */
37 //---------------------------------------------------------------------------
38 
39 #ifndef PopulationManagerH
40  #define PopulationManagerH
41 
42 // Forwards
43 class TAnimal;
44 class ALMaSSGUI;
45 class AlleleFreq;
46 class AOR_Probe;
47 
48 // Start defines
49 typedef char * AnsiString;
50 typedef vector < TAnimal * > TListOfAnimals;
51 // END defines
52 
53 
54 //------------------------------------------------------------------------------
59 {
73  // Above this line are used for menu items and have to be in this order and present
80 };
81 //------------------------------------------------------------------------------
82 
87 struct IntArray100 {
88 public:
89  int n[ 100 ];
90 };
91 
92 //------------------------------------------------------------------------------
93 
98 struct rectangle {
99 public:
100  unsigned m_x1;
101  unsigned m_y1;
102  unsigned m_x2;
103  unsigned m_y2;
104 };
105 //------------------------------------------------------------------------------
106 
111 //------------------------------------------------------------------------------
112 
114 protected:
119 public:
122  return m_CurrentStateNo;
123  }
125  void SetCurrentStateNo(int a_num) {
126  m_CurrentStateNo = a_num;
127  }
129  bool GetStepDone() {
130  return m_StepDone;
131  }
133  void SetStepDone(bool a_bool) {
134  m_StepDone = a_bool;
135  }
137  virtual void BeginStep(void) {}
139  virtual void Step(void) {}
141  virtual void EndStep(void) {}
143  virtual void ReinitialiseObject() {
144  m_StepDone = false;
145  m_CurrentStateNo = 0;
146  }
148  TALMaSSObject();
150  virtual ~TALMaSSObject();
152  void OnArrayBoundsError();
153 #ifdef __CJTDebug_5
154  int AmAlive;
155  int IsAlive() {
156  return AmAlive;
157  }
158  void DEADCODEError();
159 #endif
160 };
161 
162 //------------------------------------------------------------------------------
163 
169 // used to communicate the position of an animal to inquiring objects
170 {
171 public:
172  unsigned m_x;
173  unsigned m_y;
176 };
177 //------------------------------------------------------------------------------
178 
187 {
188 public:
189  int m_Size;
190  int m_Age;
191  unsigned m_Range_x;
192  unsigned m_Range_y;
193  unsigned m_OldRange_x;
194  unsigned m_OldRange_y;
195 };
196 //------------------------------------------------------------------------------
197 
205 class TAnimal : public TALMaSSObject {
206 public:
207  unsigned SupplyFarmOwnerRef();
212  }
214  return m_Location_x;
215  }
217  return m_Location_y;
218  }
219  virtual void KillThis()
220  {
221  m_CurrentStateNo = -1;
222  m_StepDone = true;
223  };
224  virtual void CopyMyself() {
225  };
226 protected:
238  }
239 public:
240  void SetX( int a_x ) {
241  m_Location_x = a_x;
242  }
243  void SetY( int a_y ) {
244 
245  m_Location_y = a_y;
246 
247  }
248  TAnimal( int x, int y, Landscape * L );
249  // Note that below must be replaced in a descendent class e.g. Skylark_Base
250  virtual void BeginStep( void ) {
251  }
252  virtual void Step( void ) {
253  }
254  virtual void EndStep( void ) {
255  }
257  virtual void ReinitialiseObject(int x, int y, Landscape * L) {
258  m_OurLandscape = L;
259  m_Location_x = x;
260  m_Location_y = y;
262  }
263  virtual int WhatState() {
264  return 0;
265  }
266  virtual void Dying() {
267  KillThis();
268  }
269  void CheckManagement( void );
270  void CheckManagementXY( int x, int y );
271  virtual bool OnFarmEvent( FarmToDo /* event */ ) {
272  return false;
273  }
274 };
275 
276 //------------------------------------------------------------------------------
277 //------------------------------------------------------------------------------
278 
284 {
285 protected:
286  ofstream * m_MyFile;
287  int m_Time;
288  char m_MyFileName[ 255 ];
289 public:
291  unsigned m_ReportInterval; // from 1-10
292  unsigned m_NoAreas; // from 1-10
293  rectangle m_Rect[ 10 ]; // can have up to ten areas
294  unsigned m_NoEleTypes;
295  unsigned m_NoVegTypes;
296  unsigned m_NoFarms;
297  TTypesOfVegetation m_RefVeg[ 25 ]; // up to 25 reference types
298  TTypesOfLandscapeElement m_RefEle[ 25 ]; // up to 25 reference types
299  unsigned m_RefFarms[ 25 ]; // up to 25 reference types
300  // Species Specific Code below:
301  bool m_TargetTypes[ 10 ]; // eggs,nestlings,fledgelings,males,females etc.
302  void FileOutput( int No, int time, int ProbeNo );
303  void FileAppendOutput( int No, int time );
304  probe_data();
305  void SetFile( ofstream * F );
306  ofstream * OpenFile( char * Nme );
307 
309  m_MyFile = new ofstream(m_MyFileName, ios::app);
310  if (!(*m_MyFile).is_open())
311  {
312  g_msg->Warn( WARN_FILE, "PopulationManager::AppendToFile() Unable to open file for append: ", m_MyFileName );
313  exit(1);
314  }
315  return true;
316  }
317  void CloseFile();
318  ~probe_data();
319 };
320 //------------------------------------------------------------------------------
321 //------------------------------------------------------------------------------
322 
324 {
329 protected:
330  double m_K;
331  double m_n;
332  double m_Sum;
333  double m_SumX;
334  double m_SumX2;
335 public:
338  {
339  ClearData();
340  }
342  void add_variable(double x){
343  // This uses the computed shifted data equation.
344  if (m_n == 0) m_K = x;
345  m_n++;
346  m_Sum += x;
347  m_SumX += x - m_K;
348  m_SumX2 += (x - m_K) * (x - m_K);
349  }
351  void remove_variable(double x){
352  m_n--;
353  m_Sum -= x;
354  m_SumX -= (x - m_K);
355  m_SumX2 -= (x - m_K) * (x - m_K);
356  }
358  double get_N(){
359  return m_n;
360  }
362  double get_Total(){
363  return m_Sum;
364  }
366  double get_meanvalue(){
367  if (m_n == 0) return -1;
368  return m_K + m_SumX / m_n;
369  }
371  double get_varianceP(){
372  if (m_n < 2)
373  {
374  return -1; // Ilegal n value, but don't want to exit
375  }
376  return (m_SumX2 - (m_SumX*m_SumX) / m_n) / (m_n);
377  }
379  double get_varianceS(){
380  if (m_n < 2)
381  {
382  return -1; // Ilegal n value, but don't want to exit
383  }
384  return (m_SumX2 - (m_SumX*m_SumX) / m_n) / (m_n - 1);
385  }
387  double get_SD(){
388  if (m_n < 2)
389  {
390  return -1; // Ilegal n value, but don't want to exit
391  }
392  return (sqrt(get_varianceS()));
393  }
395  double get_SE(){
396  if (m_n < 2)
397  {
398  return -1; // Ilegal n value, but don't want to exit
399  }
400  return (sqrt(get_varianceS()/get_N()));
401  }
403  void ClearData()
404  {
405  m_K = 0;
406  m_n = 0;
407  m_Sum = 0;
408  m_SumX = 0;
409  m_SumX2 = 0;
410  }
411 };
412 //------------------------------------------------------------------------------
413 
414 
415 
416 //------------------------------------------------------------------------------
425 public:
426  // Methods
428  virtual ~Population_Manager(void);
429 
430 
431  void SetNoProbes(int a_pn) { m_NoProbes = a_pn; }
433  unsigned GetLiveArraySize(int a_listindex) {
434  return m_LiveArraySize[a_listindex];
435  }
437  void IncLiveArraySize(int a_listindex) {
438  m_LiveArraySize[a_listindex]++;
439  }
440  virtual void Catastrophe(int /* a_mort */) {
441  }
442  unsigned int FarmAnimalCensus(unsigned int a_farm, unsigned int a_typeofanimal);
443  char* SpeciesSpecificReporting(int a_species, int a_time);
444  char* ProbeReport(int a_time);
445  char* ProbeReportTimed(int a_time);
446  void ImpactProbeReport(int a_Time);
447  bool BeginningOfMonth();
448  void LOG(const char* fname);
450  return m_StepSize;
451  }
452  int SupplySimW() {
453  return SimW;
454  }
455  int SupplySimH() {
456  return SimH;
457  }
458  virtual void Run(int NoTSteps);
459  virtual float Probe(int ListIndex, probe_data * p_TheProbe);
460  virtual void ImpactedProbe();
462  return m_ListNameLength;
463  }
465  TAnimal* SupplyAnimalPtr(int a_index, int a_animal) {
466  return TheArray[a_index][a_animal];
467  }
468  unsigned SupplyListIndexSize() {
469  return (unsigned)TheArray.size();
470  }
471  unsigned SupplyListSize(unsigned listindex) {
472  return (unsigned)TheArray[listindex].size();
473  }
475  bool CheckXY(int l, int i);
476 
477  //---------------------------------------------------------------------------
478  const char* SupplyListName(int i) {
479  return m_ListNames[i];
480  }
481  bool IsLast(unsigned listindex) {
482  if (TheArray[listindex].size() > 1) return false; else
483  return true;
484  }
490  int SupplyState(unsigned listindex, unsigned j) {
491  return TheArray[listindex][j]->WhatState();
492  }
493  virtual void SupplyLocXY(unsigned listindex, unsigned j, int & x, int & y) {
494  x = TheArray[listindex][j]->Supply_m_Location_x();
495  y = TheArray[listindex][j]->Supply_m_Location_y();
496  }
497  const char* SupplyStateNames(int i) {
498  return StateNames[i];
499  }
501  return StateNamesLength;
502  }
503  virtual void DisplayLocations();
504  int ProbeFileInput(char * p_Filename, int p_ProbeNo);
505  // Attributes
506 #ifdef __ALMASS_VISUAL
507  ALMaSSGUI * m_MainForm; // Need to use this when drawing to main form
508 #endif
509  int IndexArrayX[5][10000];
511  int SimH, SimW;
512  unsigned SimHH, SimWH;
513  char m_SimulationName[255];
514  bool ProbesSet; // used to show when probes are needed to be set
516  TAnimal * FindClosest(int x, int y, unsigned Type);
517  // Output arrays
518 #ifndef __UNIX__
519 // unsigned Counts[ 10 ] [ 100 ];
520 #endif
521 protected:
522  // Attributes
523  // Holds the number of live animals repsented in each element of vector of vectors TheArray
524  vector<unsigned> m_LiveArraySize;
530  //FILE* m_FledgelingFile;
531  const char* StateNames[100];
534  vector < TListOfAnimals > TheArray; // Creates an empty array of arrays
536  /* IntArray100 StateList; */
537  const char* m_ListNames[32];
539  FILE * TestFile;
540  FILE * TestFile2;
541  // dww. Hardcoded 12. Fix.
542  unsigned BeforeStepActions[12];
545  // Methods
547  virtual bool StepFinished();
548  virtual void DoFirst();
549  virtual void DoBefore();
550  virtual void DoAfter();
551  virtual void DoAlmostLast();
552  virtual void DoLast();
554  void EmptyTheArray();
555  void SortX(unsigned Type);
556  void SortXIndex(unsigned Type);
557  void SortY(unsigned Type);
558  void SortState(unsigned Type);
559  void SortStateR(unsigned Type);
560  unsigned PartitionLiveDead(unsigned Type);
561  void Shuffle_or_Sort(unsigned Type);
562  void Shuffle(unsigned Type);
563  virtual void Catastrophe();
564 public:
565  // Grid related functions
566  bool OpenTheRipleysOutputProbe(string a_NWordFilename);
567  void OpenTheAOROutputProbe(string a_AORFilename);
569  bool OpenTheReallyBigProbe();
570  virtual void TheAOROutputProbe();
571  virtual void TheRipleysOutputProbe(FILE* a_prb);
572  virtual void TheReallyBigOutputProbe();
574  virtual void CloseTheRipleysOutputProbe();
575  virtual void CloseTheReallyBigOutputProbe();
578  int GetSeasonNumber() { return m_SeasonNumber; }
579 protected:
581  ofstream* AOROutputPrb;
596 
597  long int lamdagrid[2][257][257]; // THIS ONLY WORKS UP TO 10x10 KM !!!!
598 public:
599  void LamdaDeath(int x, int y) {
600  // inlined for speed
601  lamdagrid[1][x / __lgridsize][y / __lgridsize]++;
602  }
603  void LamdaBirth(int x, int y) {
604  lamdagrid[0][x / __lgridsize][y / __lgridsize]++;
605  }
606  void LamdaBirth(int x, int y, int z) {
607  lamdagrid[0][x / __lgridsize][y / __lgridsize] += z;
608  }
609  void LamdaClear() {
610  for (int i = 0; i < 257; i++) {
611  for (int j = 0; j < 257; j++) {
612  lamdagrid[0][i][j] = 0;
613  lamdagrid[1][i][j] = 0;
614  }
615  }
616  }
617  void LamdaDumpOutput();
618  // end grid stuff
619 public: // Special ones for compatability to descended managers
620  virtual int SupplyPegPosx(int) {
621  return 0;
622  }
623  virtual int SupplyPegPosy(int) {
624  return 0;
625  }
626  virtual int SupplyCovPosx(int) {
627  return 0;
628  }
629  virtual int SupplyCovPosy(int) {
630  return 0;
631  }
632  virtual bool OpenTheFledgelingProbe() {
633  return false;
634  }
635  virtual bool OpenTheBreedingPairsProbe() {
636  return false;
637  }
639  return false;
640  }
641  virtual void BreedingPairsOutput(int) {
642  }
643  virtual int TheBreedingFemalesProbe(int) {
644  return 0;
645  }
646  virtual int TheFledgelingProbe() {
647  return 0;
648  }
649  virtual void BreedingSuccessProbeOutput(double, int, int, int, int, int, int, int) {
650  }
651  virtual int TheBreedingSuccessProbe(int &, int &, int &, int &, int &, int &) {
652  return 0;
653  }
654  virtual void FledgelingProbeOutput(int, int) {
655  }
656  virtual void TheGeneticProbe(unsigned, int, unsigned &) {
657  }
658  virtual void GeneticsResultsOutput(FILE *, unsigned) {
659  }
660 };
661 //------------------------------------------------------------------------------
662 //------------------------------------------------------------------------------
663 
669 {
670 public:
671  PopulationManagerList() { for (int i=0; i< TOP_foobar; i++) m_populationlist[i] = NULL; }
674 protected:
676 };
677 //------------------------------------------------------------------------------
678 
679 
680 #endif
681 
682 
vector< TAnimal * > TListOfAnimals
Definition: PopulationManager.h:50
char * AnsiString
Definition: PopulationManager.h:46
TTypesOfPopulation
An enum to hold all the possible types of population handled by a Population_Manager class.
Definition: PopulationManager.h:59
@ TOP_Beetle
Definition: PopulationManager.h:63
@ TOP_Hunters
Definition: PopulationManager.h:77
@ TOP_ApisRAM
Definition: PopulationManager.h:71
@ TOP_LaceWing
Definition: PopulationManager.h:78
@ TOP_Vole
Definition: PopulationManager.h:61
@ TOP_RoeDeer
Definition: PopulationManager.h:67
@ TOP_Hare
Definition: PopulationManager.h:64
@ TOP_Goose
Definition: PopulationManager.h:66
@ TOP_Osmia
Definition: PopulationManager.h:70
@ TOP_foobar
Definition: PopulationManager.h:79
@ TOP_Rabbit
Definition: PopulationManager.h:68
@ TOP_Predators
Definition: PopulationManager.h:76
@ TOP_Newt
Definition: PopulationManager.h:69
@ TOP_Skylark
Definition: PopulationManager.h:60
@ TOP_OliveMoth
Definition: PopulationManager.h:72
@ TOP_Spider
Definition: PopulationManager.h:62
@ TOP_Dormouse
Definition: PopulationManager.h:75
@ TOP_MarshFritillary
Definition: PopulationManager.h:74
@ TOP_Partridge
Definition: PopulationManager.h:65
Definition: AOR_Probe.h:6
A simple class defining an x,y coordinate set.
Definition: ALMaSS_Setup.h:53
Class to handle statistics and constructs based on allele frequencies.
Definition: GeneticMaterial.h:62
A class defining an animals position.
Definition: PopulationManager.h:170
unsigned m_x
Definition: PopulationManager.h:172
unsigned m_y
Definition: PopulationManager.h:173
TTypesOfLandscapeElement m_EleType
Definition: PopulationManager.h:174
TTypesOfVegetation m_VegType
Definition: PopulationManager.h:175
The landscape class containing all environmental and topographical data.
Definition: landscape.h:113
int SupplySimAreaHeight(void)
Definition: landscape.h:1637
int SupplySimAreaWidth(void)
Definition: landscape.h:1632
int SupplyPolyRef(int a_x, int a_y)
Definition: landscape.h:1488
void Warn(MapErrorState a_level, std::string a_msg1, std::string a_msg2)
Definition: maperrormsg.cpp:59
Base class for all population managers.
Definition: PopulationManager.h:424
FILE * ReallyBigOutputPrb
Definition: PopulationManager.h:595
AOR_Probe * m_AOR_Probe
Definition: PopulationManager.h:526
unsigned SupplyListIndexSize()
Definition: PopulationManager.h:468
virtual void DoLast()
Definition: PopulationManager.cpp:530
virtual int SupplyCovPosx(int)
Definition: PopulationManager.h:626
int SimH
Definition: PopulationManager.h:511
virtual float Probe(int ListIndex, probe_data *p_TheProbe)
Definition: PopulationManager.cpp:680
int SupplySimH()
Definition: PopulationManager.h:455
int ProbeFileInput(char *p_Filename, int p_ProbeNo)
Definition: PopulationManager.cpp:574
char * ProbeReportTimed(int a_time)
Definition: PopulationManager.cpp:1300
FILE * RipleysOutputPrb7
Definition: PopulationManager.h:589
virtual void TheAOROutputProbe()
Definition: PopulationManager.cpp:924
const char * m_ListNames[32]
Definition: PopulationManager.h:537
virtual void TheReallyBigOutputProbe()
Definition: PopulationManager.cpp:913
char m_SimulationName[255]
Definition: PopulationManager.h:513
virtual void BreedingPairsOutput(int)
Definition: PopulationManager.h:641
virtual void Catastrophe(int)
Definition: PopulationManager.h:440
FILE * m_AlleleFreqsFile
Definition: PopulationManager.h:528
FILE * RipleysOutputPrb1
Definition: PopulationManager.h:583
virtual void SupplyLocXY(unsigned listindex, unsigned j, int &x, int &y)
Definition: PopulationManager.h:493
vector< unsigned > m_LiveArraySize
Definition: PopulationManager.h:524
virtual int SupplyPegPosx(int)
Definition: PopulationManager.h:620
FILE * RipleysOutputPrb12
Definition: PopulationManager.h:594
FILE * RipleysOutputPrb8
Definition: PopulationManager.h:590
void LamdaBirth(int x, int y, int z)
Definition: PopulationManager.h:606
virtual void Run(int NoTSteps)
Definition: PopulationManager.cpp:337
virtual bool OpenTheBreedingSuccessProbe()
Definition: PopulationManager.h:638
long int lamdagrid[2][257][257]
Definition: PopulationManager.h:597
bool ProbesSet
Definition: PopulationManager.h:514
FILE * RipleysOutputPrb
Definition: PopulationManager.h:582
virtual void ImpactedProbe()
Definition: PopulationManager.cpp:672
FILE * m_EasyPopRes
Definition: PopulationManager.h:529
unsigned BeforeStepActions[12]
Definition: PopulationManager.h:542
int SupplySimW()
Definition: PopulationManager.h:452
virtual ~Population_Manager(void)
Definition: PopulationManager.cpp:266
void OpenTheAOROutputProbe(string a_AORFilename)
Definition: PopulationManager.cpp:771
void SortStateR(unsigned Type)
Definition: PopulationManager.cpp:1008
int m_SeasonNumber
Holds the season number. Used when running goose and hunter sims.
Definition: PopulationManager.h:544
FILE * RipleysOutputPrb11
Definition: PopulationManager.h:593
virtual void DoFirst()
Definition: PopulationManager.cpp:320
virtual void CloseTheReallyBigOutputProbe()
Definition: PopulationManager.cpp:904
int m_catastrophestartyear
Definition: PopulationManager.h:532
FILE * TestFile
Definition: PopulationManager.h:539
Population_Manager(Landscape *L)
Definition: PopulationManager.cpp:221
bool IsLast(unsigned listindex)
Definition: PopulationManager.h:481
virtual void Catastrophe()
Definition: PopulationManager.cpp:1109
const char * SupplyStateNames(int i)
Definition: PopulationManager.h:497
void LamdaBirth(int x, int y)
Definition: PopulationManager.h:603
void SortState(unsigned Type)
Definition: PopulationManager.cpp:999
const char * StateNames[100]
Definition: PopulationManager.h:531
void LamdaDumpOutput()
Definition: PopulationManager.cpp:657
FILE * RipleysOutputPrb9
Definition: PopulationManager.h:591
void SetNoProbes(int a_pn)
Definition: PopulationManager.h:431
int SupplyState(unsigned listindex, unsigned j)
Definition: PopulationManager.h:490
virtual void GeneticsResultsOutput(FILE *, unsigned)
Definition: PopulationManager.h:658
void LamdaClear()
Definition: PopulationManager.h:609
virtual bool StepFinished()
Overrides the population manager StepFinished - there is no chance that hunters do not finish a step ...
Definition: PopulationManager.cpp:498
TAnimal * SupplyAnimalPtr(int a_index, int a_animal)
Returns the pointer indexed by a_index and a_animal. Note NO RANGE CHECK.
Definition: PopulationManager.h:465
char * SpeciesSpecificReporting(int a_species, int a_time)
Definition: PopulationManager.cpp:1121
FILE * RipleysOutputPrb5
Definition: PopulationManager.h:587
virtual int TheBreedingSuccessProbe(int &, int &, int &, int &, int &, int &)
Definition: PopulationManager.h:651
virtual void DisplayLocations()
Definition: PopulationManager.cpp:560
FILE * RipleysOutputPrb10
Definition: PopulationManager.h:592
bool OpenTheRipleysOutputProbe(string a_NWordFilename)
Definition: PopulationManager.cpp:757
bool CheckXY(int l, int i)
Debug method to test for out of bounds coordinates.
Definition: PopulationManager.cpp:1518
virtual void TheRipleysOutputProbe(FILE *a_prb)
Definition: PopulationManager.cpp:918
int GetSeasonNumber()
Get the season number.
Definition: PopulationManager.h:578
virtual bool OpenTheBreedingPairsProbe()
Definition: PopulationManager.h:635
char * ProbeReport(int a_time)
Definition: PopulationManager.cpp:1273
TTypesOfPopulation GetPopulationType()
Definition: PopulationManager.h:576
FILE * RipleysOutputPrb6
Definition: PopulationManager.h:588
unsigned m_ListNameLength
Definition: PopulationManager.h:538
int m_StepSize
Definition: PopulationManager.h:533
virtual bool OpenTheFledgelingProbe()
Definition: PopulationManager.h:632
bool OpenTheMonthlyRipleysOutputProbe()
Definition: PopulationManager.cpp:778
FILE * RipleysOutputPrb3
Definition: PopulationManager.h:585
void ImpactProbeReport(int a_Time)
Definition: PopulationManager.cpp:1321
void EmptyTheArray()
Removes all objects from the TheArray by deleting them and clearing TheArray.
Definition: PopulationManager.cpp:962
int IndexArrayX[5][10000]
Definition: PopulationManager.h:509
void LamdaDeath(int x, int y)
Definition: PopulationManager.h:599
FILE * TestFile2
Definition: PopulationManager.h:540
const char * SupplyListName(int i)
Definition: PopulationManager.h:478
virtual void FledgelingProbeOutput(int, int)
Definition: PopulationManager.h:654
unsigned PartitionLiveDead(unsigned Type)
Definition: PopulationManager.cpp:1015
unsigned SimWH
Definition: PopulationManager.h:512
int SupplyStepSize()
Definition: PopulationManager.h:449
unsigned SimHH
Definition: PopulationManager.h:512
virtual void DoBefore()
Definition: PopulationManager.cpp:328
void Shuffle_or_Sort(unsigned Type)
Definition: PopulationManager.cpp:1073
void IncLiveArraySize(int a_listindex)
Increments the number of 'live' objects for a list index in the TheArray.
Definition: PopulationManager.h:437
unsigned SupplyStateNamesLength()
Definition: PopulationManager.h:500
unsigned SupplyListSize(unsigned listindex)
Definition: PopulationManager.h:471
virtual void CloseTheRipleysOutputProbe()
Definition: PopulationManager.cpp:874
virtual int SupplyPegPosy(int)
Definition: PopulationManager.h:623
ofstream * AOROutputPrb
Definition: PopulationManager.h:581
virtual void TheGeneticProbe(unsigned, int, unsigned &)
Definition: PopulationManager.h:656
void SortX(unsigned Type)
Definition: PopulationManager.cpp:979
virtual void DoAfter()
Definition: PopulationManager.cpp:513
TTypesOfPopulation m_population_type
Definition: PopulationManager.h:580
void SortXIndex(unsigned Type)
Definition: PopulationManager.cpp:1027
TAnimal * FindClosest(int x, int y, unsigned Type)
Definition: PopulationManager.cpp:937
FILE * RipleysOutputPrb2
Definition: PopulationManager.h:584
bool BeginningOfMonth()
Definition: PopulationManager.cpp:1102
FILE * m_GeneticsFile
Definition: PopulationManager.h:527
void SortY(unsigned Type)
Definition: PopulationManager.cpp:989
FILE * RipleysOutputPrb4
Definition: PopulationManager.h:586
virtual void BreedingSuccessProbeOutput(double, int, int, int, int, int, int, int)
Definition: PopulationManager.h:649
virtual void DoAlmostLast()
Definition: PopulationManager.cpp:522
vector< TListOfAnimals > TheArray
Definition: PopulationManager.h:534
virtual int SupplyCovPosy(int)
Definition: PopulationManager.h:629
unsigned int FarmAnimalCensus(unsigned int a_farm, unsigned int a_typeofanimal)
Definition: PopulationManager.cpp:1261
unsigned GetLiveArraySize(int a_listindex)
Gets the number of 'live' objects for a list index in the TheArray.
Definition: PopulationManager.h:433
virtual int TheFledgelingProbe()
Definition: PopulationManager.h:646
probe_data * TheProbe[100]
Definition: PopulationManager.h:510
int m_NoProbes
Definition: PopulationManager.h:525
bool OpenTheReallyBigProbe()
Definition: PopulationManager.cpp:859
void Shuffle(unsigned Type)
Definition: PopulationManager.cpp:1055
void LOG(const char *fname)
Definition: PopulationManager.cpp:294
int SupplyListNameLength()
Definition: PopulationManager.h:461
virtual int TheBreedingFemalesProbe(int)
Definition: PopulationManager.h:643
int SimW
Definition: PopulationManager.h:511
Landscape * m_TheLandscape
Definition: PopulationManager.h:515
unsigned StateNamesLength
Definition: PopulationManager.h:535
void CloseTheMonthlyRipleysOutputProbe()
Definition: PopulationManager.cpp:885
A small class to hold the pointers to active population managers.
Definition: PopulationManager.h:669
PopulationManagerList()
Definition: PopulationManager.h:671
Population_Manager * GetPopulation(TTypesOfPopulation a_pt)
Definition: PopulationManager.h:673
Population_Manager * m_populationlist[TOP_foobar]
Definition: PopulationManager.h:675
void SetPopulation(Population_Manager *p_pm, TTypesOfPopulation a_pt)
Definition: PopulationManager.h:672
Part of the basic ALMaSS system (obselete)
Definition: PopulationManager.h:187
unsigned m_Range_y
Definition: PopulationManager.h:192
int m_Age
Definition: PopulationManager.h:190
unsigned m_Range_x
Definition: PopulationManager.h:191
unsigned m_OldRange_y
Definition: PopulationManager.h:194
unsigned m_OldRange_x
Definition: PopulationManager.h:193
int m_Size
Definition: PopulationManager.h:189
Definition: PopulationManager.h:324
double m_Sum
Definition: PopulationManager.h:332
double m_SumX
Definition: PopulationManager.h:333
double get_meanvalue()
Returns the mean.
Definition: PopulationManager.h:366
void remove_variable(double x)
Remove a value.
Definition: PopulationManager.h:351
double m_n
Definition: PopulationManager.h:331
double get_N()
Returns the number of values.
Definition: PopulationManager.h:358
double get_Total()
Returns the mean.
Definition: PopulationManager.h:362
SimpleStatistics()
SimpleStatistics constructor.
Definition: PopulationManager.h:337
double m_K
Definition: PopulationManager.h:330
double get_varianceP()
Returns the population variance.
Definition: PopulationManager.h:371
double get_SD()
Returns the sample standard deviation.
Definition: PopulationManager.h:387
double get_varianceS()
Returns the sample variance.
Definition: PopulationManager.h:379
void ClearData()
Clears the data.
Definition: PopulationManager.h:403
double get_SE()
Returns the sample standard error.
Definition: PopulationManager.h:395
double m_SumX2
Definition: PopulationManager.h:334
void add_variable(double x)
Add a value.
Definition: PopulationManager.h:342
The base class of all ALMaSS objects requiring Step code.
Definition: PopulationManager.h:113
virtual void BeginStep(void)
BeingStep behaviour - must be implemented in descendent classes.
Definition: PopulationManager.h:137
virtual ~TALMaSSObject()
The destructor for TALMaSSObject.
Definition: PopulationManager.cpp:1393
bool m_StepDone
Indicates whether the iterative step code is done for this timestep.
Definition: PopulationManager.h:118
void SetStepDone(bool a_bool)
Sets the step done indicator flag.
Definition: PopulationManager.h:133
int GetCurrentStateNo()
Returns the current state number.
Definition: PopulationManager.h:121
virtual void Step(void)
Step behaviour - must be implemented in descendent classes.
Definition: PopulationManager.h:139
void OnArrayBoundsError()
Used for debugging only, tests basic object properties.
Definition: PopulationManager.cpp:1427
TALMaSSObject()
The constructor for TALMaSSObject.
Definition: PopulationManager.cpp:1379
virtual void EndStep(void)
EndStep behaviour - must be implemented in descendent classes.
Definition: PopulationManager.h:141
bool GetStepDone()
Returns the step done indicator flag.
Definition: PopulationManager.h:129
int m_CurrentStateNo
The basic state number for all objects - '-1' indicates death.
Definition: PopulationManager.h:116
virtual void ReinitialiseObject()
Used to re-use an object - must be implemented in descendent classes.
Definition: PopulationManager.h:143
void SetCurrentStateNo(int a_num)
Sets the current state number.
Definition: PopulationManager.h:125
The base class for all ALMaSS animal classes.
Definition: PopulationManager.h:205
int m_Location_y
Definition: PopulationManager.h:228
AnimalPosition SupplyPosition()
Definition: PopulationManager.cpp:1345
void SetX(int a_x)
Definition: PopulationManager.h:240
virtual void ReinitialiseObject(int x, int y, Landscape *L)
Used to re-use an object - must be implemented in descendent classes.
Definition: PopulationManager.h:257
virtual void EndStep(void)
EndStep behaviour - must be implemented in descendent classes.
Definition: PopulationManager.h:254
virtual void KillThis()
Definition: PopulationManager.h:219
TAnimal(int x, int y, Landscape *L)
Definition: PopulationManager.cpp:1367
virtual void Dying()
Definition: PopulationManager.h:266
int Supply_m_Location_x()
Definition: PopulationManager.h:213
unsigned SupplyFarmOwnerRef()
Definition: PopulationManager.cpp:1359
int m_Location_x
Definition: PopulationManager.h:225
int Supply_m_Location_y()
Definition: PopulationManager.h:216
void CheckManagementXY(int x, int y)
Definition: PopulationManager.cpp:1417
virtual void CopyMyself()
Definition: PopulationManager.h:224
int SupplyPolygonRef()
Definition: PopulationManager.h:210
virtual void BeginStep(void)
BeingStep behaviour - must be implemented in descendent classes.
Definition: PopulationManager.h:250
void CorrectWrapRound()
Corrects wrap around co-ordinate problems.
Definition: PopulationManager.h:231
virtual int WhatState()
Definition: PopulationManager.h:263
Landscape * m_OurLandscape
Definition: PopulationManager.h:229
void SetY(int a_y)
Definition: PopulationManager.h:243
virtual bool OnFarmEvent(FarmToDo)
Definition: PopulationManager.h:271
APoint SupplyPoint()
Definition: PopulationManager.h:209
void CheckManagement(void)
Definition: PopulationManager.cpp:1404
virtual void Step(void)
Step behaviour - must be implemented in descendent classes.
Definition: PopulationManager.h:252
Data structure to hold & output probe data probe data is designed to be used to return the number of ...
Definition: PopulationManager.h:284
void FileAppendOutput(int No, int time)
Definition: PopulationManager.cpp:1462
unsigned m_NoAreas
Definition: PopulationManager.h:292
TTypesOfVegetation m_RefVeg[25]
Definition: PopulationManager.h:297
void FileOutput(int No, int time, int ProbeNo)
Definition: PopulationManager.cpp:1447
int m_Time
Definition: PopulationManager.h:287
void SetFile(ofstream *F)
Definition: PopulationManager.cpp:1504
ofstream * m_MyFile
Definition: PopulationManager.h:286
ofstream * OpenFile(char *Nme)
Definition: PopulationManager.cpp:1490
void CloseFile()
Definition: PopulationManager.cpp:135
bool OpenForAppendToFile()
Definition: PopulationManager.h:308
char m_MyFileName[255]
Definition: PopulationManager.h:288
rectangle m_Rect[10]
Definition: PopulationManager.h:293
unsigned m_RefFarms[25]
Definition: PopulationManager.h:299
probe_data()
Definition: PopulationManager.cpp:1479
bool m_FileRecord
Definition: PopulationManager.h:290
unsigned m_NoFarms
Definition: PopulationManager.h:296
TTypesOfLandscapeElement m_RefEle[25]
Definition: PopulationManager.h:298
unsigned m_NoVegTypes
Definition: PopulationManager.h:295
bool m_TargetTypes[10]
Definition: PopulationManager.h:301
~probe_data()
Definition: PopulationManager.cpp:1513
unsigned m_NoEleTypes
Definition: PopulationManager.h:294
unsigned m_ReportInterval
Definition: PopulationManager.h:291
class MapErrorMsg * g_msg
This pointer provides access the to the internal ALMaSS error message system.
Definition: maperrormsg.cpp:41
@ WARN_FILE
Definition: maperrormsg.h:37
A struct of 100 ints.
Definition: PopulationManager.h:87
int n[100]
Definition: PopulationManager.h:89
A struct defining two x,y coordinate sets of positive co-ords only.
Definition: PopulationManager.h:98
unsigned m_x1
Definition: PopulationManager.h:100
unsigned m_x2
Definition: PopulationManager.h:102
unsigned m_y2
Definition: PopulationManager.h:103
unsigned m_y1
Definition: PopulationManager.h:101
TTypesOfLandscapeElement
Definition: tole_declaration.h:36
TTypesOfVegetation
Definition: tov_declaration.h:30
FarmToDo
Definition: treatment.h:31